/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ssp.service;

import java.util.ArrayList;
import java.util.List;
import ssp.ResourceManager;
import ssp.SimulationManager;

/**
 * シミュレーション中のフロントエンドサーバを管理するクラス
 * @author yamazaki
 */
public class FrontendServerManager implements ResourceManager {
    
    /**
     * シングルトンのためprivateアクセス
     */
    private final static FrontendServerManager INSTANCE = new FrontendServerManager();
    
    /**
     * シミュレーション中のフロントエンドサーバのリスト
     */
    private List<FrontendServer> frontendServerlist;

    /**
     * コンストラクタ
     */
    public FrontendServerManager() {
        init();
        SimulationManager.register(this);
    }

    /**
     * @return the INSTANCE
     */
    public static FrontendServerManager getINSTANCE() {
        return INSTANCE;
    }

    @Override
    public final void init() {
        frontendServerlist = new ArrayList<>(150);
    }
    
    /**
     * 指定のインデックスに対応するフロントエンドサーバを返す
     * @param index インデックス
     * @return インデックスに対応するフロントエンドサーバ
     */
    public FrontendServer getFrontendServer(int index) {
        return this.frontendServerlist.get(index);
    }
    
    /**
     * 管理中のフロントエンドサーバ数を返す
     * @return 管理中のフロントエンドサーバ数
     */
    public int getFrontEndServerNum() {
        return this.frontendServerlist.size();
    }
    
    /**
     * @return the frontendServerList
     */
    public List<FrontendServer> getFrontendServerList() {
        return new ArrayList<>(this.frontendServerlist);
    }
    
    /**
     * 指定のフロントエンドサーバを管理に追加する
     * @param frontendServer 
     */
    public void add(FrontendServer frontendServer) {
        this.frontendServerlist.add(frontendServer);
    }
    
}
